home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
netz
/
term
/
extras
/
source
/
gtlayout-source.lha
/
LTP_PlaceGroups.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-05-27
|
2KB
|
108 lines
/* GadTools layout toolkit
**
** Copyright © 1993-1995 by Olaf `Olsen' Barthel
** Freely distributable.
*/
#include "gtlayout_global.h"
VOID __regargs
LTP_PlaceGroups(LayoutHandle *handle,ObjectNode *group,LONG left,LONG top)
{
if(!handle -> Failed)
{
ObjectNode *node;
LONG plusLeft,
plusTop,
lastSpace;
if(group -> Label || group -> Special . Group . Frame)
{
plusLeft = 4 + handle -> GlyphWidth + handle -> InterWidth + group -> Special . Group . ExtraLeft;
if(group -> Label)
plusTop = handle -> RPort . TxHeight + handle -> InterHeight + group -> Special . Group . ExtraTop;
else
plusTop = 2 + handle -> InterHeight + group -> Special . Group . ExtraTop;
}
else
{
plusLeft = group -> Special . Group . ExtraLeft;
plusTop = group -> Special . Group . ExtraTop;
}
if(group -> ExtraSpace)
{
if(group -> Special . Group . ParentGroup -> Special . Group . Horizontal)
left += handle -> InterWidth;
else
top += handle -> InterHeight;
}
group -> Left = left;
group -> Top = top;
left += plusLeft;
top += plusTop;
if(group -> Special . Group . Horizontal)
{
lastSpace = left;
SCANGROUP(group,node)
{
if(LIKE_STRING_KIND(node) && node -> Special . String . LinkID != -1)
handle -> Count++;
else
{
if(node -> Type == GROUP_KIND)
LTP_PlaceGroups(handle,node,lastSpace,top);
else
{
node -> Left += left;
node -> Top += top;
handle -> Count++;
}
if(!group -> Special . Group . Paging)
{
lastSpace = node -> Left + node -> Width + handle -> InterWidth;
if(node -> Type == MX_KIND)
{
if((node -> LabelPlace == PLACETEXT_RIGHT) || (node -> LabelPlace == PLACETEXT_LEFT))
lastSpace += INTERWIDTH + node -> Special . Radio . LabelWidth;
}
}
}
}
}
else
{
lastSpace = top;
SCANGROUP(group,node)
{
if(LIKE_STRING_KIND(node) && node -> Special . String . LinkID != -1)
handle -> Count++;
else
{
if(node -> Type == GROUP_KIND)
LTP_PlaceGroups(handle,node,left,lastSpace);
else
{
node -> Left += left;
node -> Top += top;
handle -> Count++;
}
if(!group -> Special . Group . Paging)
lastSpace = node -> Top + node -> Height + handle -> InterHeight;
}
}
}
}
}